import path from 'path'
import Koa from 'koa'
import koaBody from 'koa-body'
import KoaStatic from 'koa-static'
import parameter from 'koa-parameter' // 获取requestbody的参数一
import session from 'koa-session' // 验证码需要的session模块
const errHandler = require('./errHandler')
const router = require('../router')

const app = new Koa()
app.keys = ['zionCaptcha'];
const config = {
    key: 'koa:sess',
    maxAge: 60000,
    overwrite: true,
    httpOnly: true,
    signed: true,
    rolling: true,//每次访问将会重置过期时间
    renew: true
}

app.use(session(config, app));
app.use(koaBody({
    multipart: true,
    formidable: {
        // 在配置选项option中，不推荐使用相对路径
        // 在option里的相对路径，不是相对的当前文件，相对process.cwd()
        uploadDir: path.join(__dirname, '../upload'),
        keepExtensions: true
    },
    parsedMethods: ['POST', 'PUT', 'PATCH', 'DELETE']
}))
app.use(KoaStatic(path.join(__dirname, '../upload')))
app.use(parameter(app))
app.use(router.routes())
app.use(router.allowedMethods())

// 统一的错误处理
app.on('error', errHandler)

module.exports = app;